package top.lixunda.ecommerce.server.user.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import top.lixunda.commerce.common.core.entity.MessageObject;
import top.lixunda.ecommerce.server.business.BaseController;
import top.lixunda.ecommerce.server.user.api.controller.ISystemMenuAllotController;
import top.lixunda.ecommerce.server.user.api.entity.dto.SystemMenuAllotDTO;
import top.lixunda.ecommerce.server.user.service.ISystemMenuAllotService;

import java.util.List;

/**
 * 菜单菜单分配管理接口
 *
 * @author Lixunda
 * @since 2020-04-24
 */
@Slf4j
@RestController
public class SystemMenuAllotController extends BaseController
        implements ISystemMenuAllotController {

    // 菜单分配由后台超级管理员和店铺超级管理员进行，其他任何用户都没有操作权限
    // 后台超级管理员管理后台用户的权限的分配，店铺超级管理员管理店铺用户的权限
    
    private final ISystemMenuAllotService systemMenuAllotService;

    @Autowired
    public SystemMenuAllotController(ISystemMenuAllotService systemMenuAllotService) {
        this.systemMenuAllotService = systemMenuAllotService;
    }

    /**
     * 分配菜单
     *
     * @param list 菜单操作DTO
     * @return 是否保存成功
     */
    @Override
    public MessageObject<Boolean> allotMenu(List<SystemMenuAllotDTO> list) {
        Boolean result = systemMenuAllotService.allotMenu(list);
        return getSuccessMessageObject("添加菜单分配成功", result);
    }

    /**
     * 移除菜单
     *
     * @param list 菜单操作DTO
     * @return 是否移除成功
     */
    @Override
    public MessageObject<Boolean> removeMenuAllot(List<SystemMenuAllotDTO> list) {
        Boolean result = systemMenuAllotService.removeMenuAllot(list);
        return getSuccessMessageObject("移除菜单分配成功", result);
    }

    /**
     * 根据分配编号移除菜单分配
     *
     * @param list 分配编号列表
     * @return 是否移除成功
     */
    @Override
    public MessageObject<Boolean> removeMenuAllotByIds(List<Integer> list) {
        Boolean result = systemMenuAllotService.removeMenuAllotByIds(list);
        return getSuccessMessageObject("移除菜单分配成功", result);
    }
}
